<?php

/**
 * Description of TplRisico
 * 
 * Dit is de klasse die onder een risicoaandachtsgebied hangt. Het Risicogebied
 * is in feite hetzelfde als de subparagraaf van een paragraaf van een hoofdstuk van een V&G plan. Deze
 * risico's beschrijven wat voor risico's er zijn binnen een bepaald risicogebied. Denk hierbij aan
 * "stoten", "uitglijden", "Kou vatten", "Stoffen inademen". 
 *
 * @author Randy
 * @version 1.0
 * 
 * @category Cofely - Veiligheid & Gezondheids plan sjabloon
 * @uses TextObject, DbRisicogebied, Risico, Versie
 * 
 */

require_once 'defs/Constants.php';
include_once(FILE_CLASS_TPL_MAATREGEL);
include_once(FILE_DB_TPL_RISICO);
class TplRisico extends TextObject{
    
    /**
     * Dit is de array die alle maatregelen bevat. Deze hangt onder een risico-
     * gebied en staat boven een maatregel.
     * @var array $maatregel_array
     */
    private $maatregel_array = array();
    /**
     * De naam van een risico, bijvoorbeeld onderkoeld raken, ergens aan blijven plakken, verbranden
     * @var String $naam
     */
    private $naam = '';
    /**
     * De beschrijving/helptekst van een risico, bijvoorbeeld "Het verbranden van lichaamsdelen doordat deze in contact komen met de hete leidingen"
     * @var String $beschrijving
     */
    protected $beschrijving = '';
    private $error_count = '';
    /**
     * De contructor functie die wordt aangeroepen zodra er een instantie van deze
     * klasse wordt gemaakt
     * @param String $tpl_risico 
     */
    public function __construct($tpl_risico = ''){
        //Als het risico niet leegg is, zet je de beschrijving
        if(!empty($tpl_risico)){
            $this->setBeschrijving($tpl_risico);
        }
    }
    /**
     * Kijk of er een maatregel is ingevuld. zo niet, geef een foutmelding
     * @param String $maatregelnaam
     * @return boolean 
     */
    public function check($maatregelnaam){
        
        if(empty($maatregelnaam)){
            echo TPL_RISICO_ERROR_LEGEMAATREGEL;
            return false;
        }
        
    }
    /**
     * de Setter van de risico naam
     * @param String $naam 
     */    
    public function setNaam($naam) {
        if ($this->controle->checkString($naam, DB_NUMBER_COMON_MAXIMUM, MINIMUM_ALGEMEEN)) {
            $this->naam = $naam;
        } else {
            $this->error_count++;
            echo WHITE_SPACE_ENTER;
            echo PERSOON_ERROR_GEENNAAM;
        }
    }
    /**
     * de Setter van de risico beschrijving / helptekst
     * @param type $beschrijving 
     */
    public function setBeschrijving( $beschrijving ){
        if ($this->controle->checkString($beschrijving, DB_TEXT_OMSCHRIJVING, MINIMUM_ALGEMEEN)) {
            $this->beschrijving = $beschrijving;
        } else {
            $this->error_count++;
            echo WHITE_SPACE_ENTER;
            echo VOER_EEN_GELDIGE_OMSCHRIJVING_IN;
        }
    }
    /**
     * de Getter van de risico naam, returned de String $naam
     * @return String $naam
     */
    public function getNaam(){
        
       return $this->naam; 
        
    }
    /**
     * De Getter van de risico beschrijving, returned de String $beschrijving
     * @return String $beschrijving
     */
    public function getBeschrijving(){
        
        return $this->beschrijving;
        
    }
    /**
     * Deze functie slaat het sjabloon_versie_id, risicoaandachtsgebied naam en de beschrijving op
     * in de database. Daarna worden alle risicogebieden die hieronder vallen opgeslagen.
     * 
     * @param type $sjabloon_versie_id
     * @param type $risiconaam
     * @param type $risicobeschrijving
     * @param type $risicogebied_id 
     */
    public function save( $sjabloon_versie_id, $risiconaam, $risicobeschrijving, $risicogebied_id ){
        //Maak een object van het risico
        $db_risico = new DbRisico();
        //Sla het risico op met zijn naam en beschrijving
        $db_risico->save( $sjabloon_versie_id, $risiconaam, $risicobeschrijving, $risicogebied_id );
        //Haal het id op uit de database en stop deze in $risico_id
        $risico_id = $db_risico->getRisico_id();
        
        //Sla alle maatregelen die onder een risico hangen op
        foreach( $this->maatregel_array as $idx => $obj){

            $this->maatregel_array[$idx]->save( $sjabloon_versie_id, $obj->getNaam(), $obj->getBeschrijving(), $risico_id );
            
        }
            
    }
    
    public function update(){
        
        
        
    }
    
    public function checkError() {
        if($this->error_count != 0) {
            echo WHITE_SPACE_ENTER;
            echo GUI_FOUTEN_GEVONDEN_ERROR;
        } else {
            echo WHITE_SPACE_ENTER;
            echo GUI_GEEN_FOUTEN_GEVONDEN_ERROR;
            $new = new TplRisico();
            $new->save();
        }
    }
    
    /**
     * Deze functie voegt een maatregel object toe aan de maatregel_array
     * 
     * @param type $maatregelnaam
     * @param type $maatregelbeschrijving 
     */
    public function addMaatregel( $maatregelnaam, $maatregelbeschrijving ){
        //voeg een nieuw object toe aan de array
        $this->maatregel_array[] = new TplMaatregel();
        //Kijk of er een maatregel is
        $this->check($maatregelnaam);
        //Set de naam en beschrijving vor de maatregel
        $this->maatregel_array[count($this->maatregel_array)-1]->setNaam($maatregelnaam);
        $this->maatregel_array[count($this->maatregel_array)-1]->setBeschrijving($maatregelbeschrijving);
        
    }

}

?>